#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
简单的CSV中文编码转换工具

使用方法:
    python convert_csv.py                          # 转换默认文件
    python convert_csv.py file1.csv               # 转换单个文件
    python convert_csv.py file1.csv file2.csv     # 转换多个文件
"""

import pandas as pd
import os
import sys
from pathlib import Path

def convert_csv(input_file: str, output_file: str = None) -> str:
    """转换单个CSV文件为支持中文显示的格式"""
    
    if not os.path.exists(input_file):
        print(f"❌ 文件不存在: {input_file}")
        return None
    
    # 生成输出文件名
    if output_file is None:
        path = Path(input_file)
        output_file = path.parent / f"{path.stem}_chinese{path.suffix}"
    
    print(f"🔄 转换: {input_file} -> {output_file}")
    
    try:
        # 尝试多种编码读取文件
        encodings = ['utf-8', 'utf-8-sig', 'gbk', 'gb2312', 'cp936']
        df = None
        
        for encoding in encodings:
            try:
                df = pd.read_csv(input_file, encoding=encoding)
                print(f"   使用编码: {encoding}")
                break
            except UnicodeDecodeError:
                continue
        
        if df is None:
            print(f"❌ 无法读取文件: {input_file}")
            return None
        
        # 保存为UTF-8-BOM格式（Excel友好）
        df.to_csv(output_file, index=False, encoding='utf-8-sig')
        
        file_size = os.path.getsize(output_file) / 1024
        print(f"✅ 转换完成: {output_file} ({file_size:.1f} KB)")
        print(f"   行数: {len(df)}, 列数: {len(df.columns)}")
        
        return str(output_file)
        
    except Exception as e:
        print(f"❌ 转换失败: {str(e)}")
        return None

def main():
    """主函数"""
    print("🔧 CSV中文编码转换工具")
    print("=" * 40)
    
    # 获取命令行参数
    args = sys.argv[1:]
    
    if not args:
        # 默认转换项目中的CSV文件
        default_files = [
            "data/processed/evaluation_results.csv",
            "data/processed/reranking_results.csv"
        ]
        
        print("📋 未指定文件，转换默认文件:")
        existing_files = []
        for file_path in default_files:
            if os.path.exists(file_path):
                existing_files.append(file_path)
                print(f"   ✅ {file_path}")
            else:
                print(f"   ⚠️  {file_path} (不存在)")
        
        if not existing_files:
            print("\n❌ 没有找到默认文件，请指定要转换的文件")
            print("💡 使用方法: python convert_csv.py file1.csv file2.csv")
            return
        
        files_to_convert = existing_files
    else:
        # 使用指定的文件
        files_to_convert = args
        print(f"📋 准备转换 {len(files_to_convert)} 个文件")
    
    # 转换文件
    print(f"\n🔄 开始转换...")
    converted_count = 0
    
    for file_path in files_to_convert:
        result = convert_csv(file_path)
        if result:
            converted_count += 1
    
    print(f"\n🎉 转换完成! 成功转换 {converted_count}/{len(files_to_convert)} 个文件")
    
    if converted_count > 0:
        print(f"\n💡 使用提示:")
        print(f"   • 转换后的文件使用UTF-8-BOM编码")
        print(f"   • 可在Excel中正确显示中文")
        print(f"   • 也可用记事本、VSCode等工具打开")

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("\n\n⚠️ 用户中断操作")
    except Exception as e:
        print(f"\n❌ 程序执行出错: {str(e)}")
        sys.exit(1) 